/**
 * @file ledkey.c
 * @author      JinChengLong (https://gitee.com/Datejin/)
 * @brief       按键相关
 * @version     0.1
 * @date        2023
 * 
 * @copyright   Copyright © 2025 by JinChengLong 
 * 
 * All rights reserved.
 * Unauthorized copying, reproduction, or redistribution of this file via any medium is strictly prohibited.  
 * Proprietary and confidential.
 *   
 */


#include "ledkey.h"

#include "Delay.h"

/**
 * @brief 按键初始化
 * 
 */
void ledkey_init(void )
{
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

	GPIO_InitTypeDef GPIO_InitStructure;
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//LED1,
 	GPIO_Init(GPIOE, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;//K1,0,
 	GPIO_Init(GPIOE, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//                               
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_12 ;//|GPIO_Pin_9;//fee,LED0,RED
 	GPIO_Init(GPIOB, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//                               
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;//|GPIO_Pin_9;//fee,LED0,RED
 	GPIO_Init(GPIOA, &GPIO_InitStructure);

	
	led0(0);
	led1(0);
	
	
	
}


/**
 * @brief 按键0
 * 
 * @return uint8_t 键值
 */
uint8_t  key0(void )
{
	ledkey_init();
	if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0)
	{
		Delay_ms(20);
		while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0);
		Delay_ms(20);
		return 1;
	}
	else 
	{
		return 0;

	}
}



/**
 * @brief 按键1
 * 
 * @return uint8_t 键值
 */
uint8_t  key1(void )
{
	uint8_t a;
	ledkey_init();
	if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0)
	{
		Delay_ms(20);
		while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0);
		Delay_ms(20);
		a= 1;
	}
	else 
	{
		a= 0;

	}
	return a;
}

/**
 * @brief 唤醒按键
 * 
 * @return uint16_t 键值
 */
uint16_t  key_up(void)
{
	uint16_t a=0;
	
	
	
	
	if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1)
	{
		
		Delay_ms (20);
		while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1);
		Delay_ms (20);
		
		a=1;
		
	}
	else 
		
	{
		a=0;
	}
	
	return a;
	
}

/**
 * @brief led1
 * 
 * @param a 亮灭
 */
void   led1(uint8_t  a)
{
	if(a==1)
	{
		GPIO_ResetBits(GPIOE,GPIO_Pin_5);
	}
	else if(a==0)
	{
		GPIO_SetBits(GPIOE,GPIO_Pin_5);
	}
}


/**
 * @brief led0
 * 
 * @param a 亮灭
 */
void   led0(uint8_t a)
{
	if(a==1)
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);
	}
	else if(a==0)
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_5);
	}
}


/**
 * @brief 
 * 
 * @return uint16_t 
 */
uint16_t  conde_key(void )
{
	uint16_t a;
	
	if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5 )==1)
	{
		Delay_ms (20);
		while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5 )==1)
		Delay_ms (20);
		a= 1;
		
	}
	else if(GPIO_ReadInputDataBit (GPIOC,GPIO_Pin_5 )==0)
	{
		Delay_ms (20);
		while(GPIO_ReadInputDataBit (GPIOC,GPIO_Pin_5 )==0)
			
		
		Delay_ms (20);
		a= 0;
	}
	return a;
}







